name: tufte-viz description: | Ideate and critique data visualizations using Edward Tufte's principles from "The Visual Display of Quantitative Information." Use this skill when: (1) Designing new data visualizations or charts (2) Critiquing or improving existing visualizations (3) Reviewing dashboards or reports for graphical integrity (4) Deciding between visualization approaches (5) Reducing chartjunk or improving data-ink ratio (6) Planning small multiples or high-density displays
Discover gists
| (async () => { | |
| const TAGS_TO_DELETE = ["output", "input"]; | |
| const LIMIT = 100; | |
| const DELETE_DELAY_MS = 200; | |
| function getFirebaseToken() { | |
| const storages = [localStorage, sessionStorage]; | |
| const keyPrefix = "firebase:authUser:"; | |
| for (const storage of storages) { |
ASan (and it's younger brother, HWASan) are incredible tools for debugging memory integrity bugs in native applications. This guide explains how to set up HWASan for Geode mods on Android and how to analyze crashes.
Requirements:
- Device running Android 14+, lower is possible but only with ASan, which has a slightly different way of setting up. See here
- Android Studio or any other way of building the launcher
A pattern for building personal knowledge bases using LLMs.
This is an idea file, it is designed to be copy pasted to your own LLM Agent (e.g. OpenAI Codex, Claude Code, OpenCode / Pi, or etc.). Its goal is to communicate the high level idea, but your agent will build out the specifics in collaboration with you.
Most people's experience with LLMs and documents looks like RAG: you upload a collection of files, the LLM retrieves relevant chunks at query time, and generates an answer. This works, but the LLM is rediscovering knowledge from scratch on every question. There's no accumulation. Ask a subtle question that requires synthesizing five documents, and the LLM has to find and piece together the relevant fragments every time. Nothing is built up. NotebookLM, ChatGPT file uploads, and most RAG systems work this way.
| name | aliexpress-scraper |
|---|---|
| description | Поиск и парсинг товаров на AliExpress. Эскалация: API → Playwright stealth → Xorg + puppeteer-extra. Принудительный регион RU, сбор названий, цен, рейтинга, продаж, характеристик. |
Главное правило: не прыгать на шаг 4, не писать код до исследования. Эскалация:
| Complete command list of NotSoBot <439205512425504771>: | |
| Owner: NotSoSuper <296044494812479498> | |
| Prefix: . | |
| * = Not Required | |
| ^ = Bot Owner Only | |
| ^^ = Server Admin Only | |
| "/'s" in commands show aliases for the command (Ex: ".reverse/r <text>" Command can be run with .reverse or .r) | |
| <max_messages> = The number of messages to search through | |
| <image> = The image URL, @discord_user, the users name, discord/custom emoji, or, nothing inputted which will search through 25 messages for embeds or attachments | |
| <image-face> = Image requires a HUMAN FACE to be included |
tl;dr: Wayland is not "the future", it is merely an incompatible alternative to the established standard with a different set of priorities and goals.
Wayland breaks everything! It is binary incompatible, provides no clear transition path with 1:1 replacements for everything in X11, and is even philosophically incompatible with X11. Hence, if you are interested in existing applications to "just work" without the need for adjustments, then you may be better off avoiding Wayland.
Wayland solves no issues I have but breaks almost everything I need. Even the most basic, most simple things (like xkill) - in this case with no obvious replacement. And usually it stays broken, because the Wayland folks mostly seem to care about Automotive, Gnome, maybe KDE - and alienating e
| Misc MACs: | |
| Num MAC Vendor | |
| --- --- ------ | |
| 0000 - 00:00:00 - XEROX CORPORATION | |
| 0001 - 00:00:01 - XEROX CORPORATION | |
| 0002 - 00:00:02 - XEROX CORPORATION | |
| 0003 - 00:00:03 - XEROX CORPORATION | |
| 0004 - 00:00:04 - XEROX CORPORATION | |
| 0005 - 00:00:05 - XEROX CORPORATION | |
| 0006 - 00:00:06 - XEROX CORPORATION |
| local superpin_windows = {} | |
| ---add or remove window from superpin list | |
| ---@param target_win HL.Window | |
| local function toggle_superpin(target_win) | |
| if superpin_windows[target_win.address] then | |
| superpin_windows[target_win.address] = nil | |
| hl.notification.create({ text = "superpin off: " .. target_win.title, timeout = 2000 }) | |
| else | |
| superpin_windows[target_win.address] = { |